//
//  derived_class_init.hpp
//  learnC++
//
//  Created by liuzhibing on 2018/6/12.
//  Copyright © 2018年 yunfan.com. All rights reserved.
//

#ifndef derived_class_init_hpp
#define derived_class_init_hpp

#include <stdio.h>
#include <iostream>

class Base {
    
private:
    int m_id;
    
public:
    
    Base(int id = 0):m_id(id){
        
    }
    
    int getId() const{return m_id;}
};

class Derived : public Base {
    
public:
    double m_cost;
    
    //我们可以选择调用基类构造方法,具体看cpp
    //请注意，在Derived构造函数初始化列表中调用Base构造函数的位置并不重要 - 它将始终首先执行。
    Derived(double cost = 0.0,int id = 0);
    
//    当一个派生类被销毁时，每个析构函数都以相反的构造顺序被调用。在上面的例子中，当c被销毁时，首先调用C析构函数，然后调用B析构函数，然后调用A析构函数。
    
    
    double getCost() const{return m_cost;}
    
};

#endif /* derived_class_init_hpp */
